/* 
 * File:   OperacionCargaNuevoArchivo.h
 * Author: max
 *
 * Created on May 31, 2013, 12:53 AM
 */

#ifndef OPERACIONCARGANUEVOARCHIVO_H
#define	OPERACIONCARGANUEVOARCHIVO_H

#include <stdint.h>
#include <string>
#include "client_IRespuestaServidorManejador.h"
#include "client_FileServiceProxy.h"
#include "common_Repositorio.h"
#include "client_Operacion.h"

using namespace std;
using namespace TP;
using namespace TP::Archivos;
using namespace TP::Servicios;
using namespace TP::Comunicacion;

namespace TP { namespace Operaciones {

class OperacionCargaNuevoArchivo : public Operacion {

public:

    OperacionCargaNuevoArchivo(uint32_t pToken, FileServiceProxy* pFileService, Repositorio* pRepositorio, const string &pNombreArchivo);

    virtual ~OperacionCargaNuevoArchivo();

    virtual void ejecutar();
    
    virtual void procesarRespuesta (vector<string> &pRespuesta);
    
private:
    
    void manejarRespuestaDeclaracionArchivo (vector<string> &pRespuesta);
    
    void manejarRespuestaCargarArchivo(vector<string> &pRespuesta);
    
    void manejarRespuestaFinalizarCargaArchivo (vector<string> &pRespuesta);
    
    string _nombreArchivo;
    FileServiceProxy* _fileService;
    Repositorio* _repositorio;
};

}}

#endif	/* OPERACIONCARGANUEVOARCHIVO_H */

